/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dosideas.controller;

import com.dosideas.domain.Provincia;
import com.dosideas.exception.NombreInvalidoException;
import com.dosideas.exception.ProvinciaInvalidaException;
import com.dosideas.service.ProvinciaService;
import java.util.Collection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 *
 * @author ldeseta
 */
@Controller
@RequestMapping(value = "/provincia")
public class ProvinciaController {

    @Autowired
    private ProvinciaService provinciaService;

    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public
    @ResponseBody
    Provincia buscarPorId(@PathVariable Long id) throws ProvinciaInvalidaException {

        Provincia provincia = provinciaService.buscarProvinciaPorId(id);

        if (provincia == null) {
            throw new ProvinciaInvalidaException("Provincia no encontrado");
        }
        return provincia;
    }

    @RequestMapping(value = "/", method = RequestMethod.PUT)
    @ResponseStatus(HttpStatus.NO_CONTENT)
    public void guardarProvincia(@RequestBody Provincia provincia) throws ProvinciaInvalidaException {
        provinciaService.guardarProvincia(provincia);
    }

    @RequestMapping(value = "/nombre/{nombreAproximado}", method = RequestMethod.GET)
    public
    @ResponseBody
    Collection<Provincia> buscarPorNombreAproximado(@PathVariable String nombreAproximado) throws NombreInvalidoException {

        return provinciaService.buscarProvinciaConNombreAproximado(nombreAproximado);
    }

    @RequestMapping(value = "/todas", method = RequestMethod.GET)
    public
    @ResponseBody
    Collection<Provincia> listarProvincias() {
        return provinciaService.listarProvincias();
    }
}
